// vue.config.js
const path = require('path');
const TerserPlugin = require('terser-webpack-plugin')
const {
  title,
  devPort
} = require('./src/config')

process.env.VUE_APP_TITLE = title || 'vue-admin-beautiful'
module.exports = {
  filenameHashing: true, // 生成的静态资源在它们的文件名中包含了 hash 以便更好的控制缓存
  lintOnSave: false, // eslint-loader 是否在保存的时候检查
 
  devServer: {
    port: devPort,
    noInfo: false, // 告诉开发服务器禁止显示诸如 Webpack 捆绑包信息之类的消息。 错误和警告仍将显示。
    open: true, //是否自动启动浏览器
    overlay: {
      warnings: true,
      errors: true,
    },
    // 设置代理
    proxy: {
      "/api": {
        target: "http://localhost:3000", // 域名
        ws: true, // 是否启用websockets
        changeOrigin: true, //开启代理：在本地会创建一个虚拟服务端，然后发送请求的数据，并同时接收请求的数据，这样服务端和服务端进行数据的交互就不会有跨域问题
        pathRewrite: {
          "^/api": "/"
        }
      }
    },

  },
  // webpack配置
  configureWebpack: (config) => {
    // config为被解析的配置
    Object.assign(config, {
      // 开发生产共同配置，新增一些别名设置
      resolve: {
        alias: {
          '@': path.resolve(__dirname, './src'),
          '@c': path.resolve(__dirname, './src/components'),
          // '@p': path.resolve(__dirname, './src/pages')
        } // 别名配置
      }
    })
  },

  // 设置生产环境禁止打印日志
  configureWebpack: (config) => {
    if (process.env.NODE_ENV === 'production') {
      return {
        optimization: {
          minimizer: [
            new TerserPlugin({
              sourceMap: false,
              terserOptions: {
                compress: {
                  drop_console: true
                }
              }
            })
          ]
        }
      }
    }
  },
  css: {
    loaderOptions: {
      scss: {
        prependData: `@import "~@/styles/variables.scss";`
      }
    }
  }

}